Non-volatile storage devices, such as flash memory devices, communicate with their host device (e.g., digital cameras and handheld and mobile computers and telephones) by using a communication protocol, which allows the host device and the non-volatile storage device to exchange data and various types of messages. For example, if the host wants to write data to, or read data from, a storage device, the host device communicates to the storage device a corresponding memory command (i.e., “write” command or “read” command).
With the proliferation of flash storage devices host devices have been designed to interoperate with more than one storage devices, and usually with two storage devices. A flash memory device can be categorized either as an “embedded” memory device, semi-removable memory device, or as a “removable” memory device. iNAND™ and mDOC™, for example, are embedded flash drives. High capacity Subscriber Identity Module (HCSIM) card, for example, is an example of semi-removable memory device. By “semi-removable” is meant a memory device that resides in a host device, connected to the host device via an internal slot or port, and is not accessible to a user during normal operation of the device. CompactFlash and MultiMediaCard (“MMC”), for example, are examples of removable flash memory devices. Some host devices contain an embedded flash memory device and a port to which a removable flash memory device can be connected. Embedded memory devices are used, for example in cell phones, and removable memory devices are used, for example in Personal Digital Assistants (PDAs), digital music players, and digital cameras. Some cell phones, however, can as well use a removable memory device. Embedded memory devices are typically used for storing files and data that are required for proper functioning of the host device, and sometimes also user identification information. Removable memory devices are mostly used for storing media content, such as pictures, video clips, and music.
If a host device has to store data and it uses only one memory device, the host device has no other external storage option than to store that data in that memory device. However, if the host device uses more than one memory device, storing files and data in a memory device is subject to an optimization process, especially if the memory devices differ in type, or they have different characteristics. For example, one of the memory devices may be faster or more reliable than the other, or it may have more storage capacity, and so on.
Some approaches exist, that use simultaneous writing data into, and reading data from different storage devices. For example, one approach involves increasing memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory units. However, even though there may be multiple flash memory units on the same memory device, such multiple memory devices are not used by a common host device.
FIG. 1 schematically illustrates an exemplary data storage system (generally shown at 100) according to related art. Data storage system 100 includes a host device 101 and two storage devices, designated as 111 and 112. Application 120 may use file system 121 to generate and send data to, or ask for data from, any of storage devices 111. In computing systems, a file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access them. In the context of FIG. 1, file system 121 writes files and data into storage devices 111 and 112 and reads files and data that are requested by application 120. Files and data are exchanged between host device 101 and any of storage devices 111 and 112 via the respective device drivers 122. Each of storage devices 111 and 112 has a flash memory (designated as “Flash”) and a flash controller (designated as “Flash Managers”) to manage the flash memory. Each of storage devices 111 and 112 also has an interface (designated as “Front End”) for interfacing with host device 101 via the respective device driver.
Application 120 may have data for a specific storage device. Should there be such data, it will be sent to the specific storage device using file system 121. By way of example storage device 111 has stored therein data file 130, and host device 101 wants to update data file 130 with data 131. Therefore, storage device 111 is a target storage device waiting to receive data 131.
Traditionally, a file system, such as file system 121, would send data 131 to storage device 111 directly, without considering a better storage solution (that is, if such solution exists). For example, if storage device 112 is faster (i.e., it provides a faster access time) than storage device 111, it would be more system-wise efficient to send data 131 to storage device 112 first (data 131 stored in storage device 112 being designated as 131′), whereby to maintain better responsiveness of storage system 100 as a whole, and then, when it is more convenient (for example when host device 101 is in idle mode of operation), move data 131′ from storage device 112 to storage device 111. However, conventional host devices such as host device 101 are not designed to make such decisions.